From ee830ea321fb7a640b49bd3858d3c5917fca2b3b Mon Sep 17 00:00:00 2001 From: robertl Date: Sat, 15 Jul 2006 02:04:32 +0000 Subject: [PATCH] From Andy: fix southern hemi for wbt, set baud rate in Brauniger, route excess precision from computed speed. git-svn-id: http://gpsbabel.googlecode.com/svn/trunk@2236 f51c46e8-681c-474f-0cfe-069cfd0219fb --- gpsbabel/brauniger_iq.c | 5 +- gpsbabel/reference/wbt-200.gpx | 494 ++++++++++++++++----------------- gpsbabel/wbt-200.c | 21 +- 3 files changed, 266 insertions(+), 254 deletions(-) diff --git a/gpsbabel/brauniger_iq.c b/gpsbabel/brauniger_iq.c index b42c849da..30905e523 100644 --- a/gpsbabel/brauniger_iq.c +++ b/gpsbabel/brauniger_iq.c @@ -51,7 +51,10 @@ static const int reqd_bytes[num_states] = { 6, 1, 2, 2, 25, 2, 2, 2, 2, 2, 2, 1, static void rd_init(const char *fname) { if (serial_handle = gbser_init(fname), NULL == serial_handle) { - fatal(MYNAME ": Can't initialise port '%s'\n", fname); + fatal(MYNAME ": Can't open port '%s'\n", fname); + } + if (gbser_set_port(serial_handle, 9600, 8, 0, 1) != gbser_OK) { + fatal(MYNAME ": Can't configure port '%s'\n", fname); } } diff --git a/gpsbabel/reference/wbt-200.gpx b/gpsbabel/reference/wbt-200.gpx index af01949c9..c714bcdc2 100644 --- a/gpsbabel/reference/wbt-200.gpx +++ b/gpsbabel/reference/wbt-200.gpx @@ -9,120 +9,120 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/ - 0.556136 + 0.000000 WP0001 94.133018 - 0.247108 + 0.000000 WP0002 58.742805 - 0.026882 + 0.000000 WP0003 - 0.085008 + 0.000000 WP0004 - 0.065847 + 0.000000 WP0005 18.051563 - 0.050291 + 0.000000 WP0006 96.898911 - 0.053764 + 0.000000 WP0007 126.213005 - 0.071123 + 0.000000 WP0008 142.812088 - 0.050291 + 0.000000 WP0009 146.902481 - 0.060110 + 0.000000 WP0010 149.121628 - 0.068536 + 0.000000 WP0011 142.881119 - 0.087107 + 0.000000 WP0012 142.041077 - 0.095042 + 0.000000 WP0013 144.061920 - 0.095042 + 0.000000 WP0014 142.445999 - 0.082855 + 0.000000 WP0015 149.049561 - 0.063043 + 0.000000 WP0016 161.409058 - 0.057025 + 0.000000 WP0017 175.698807 - 0.050291 + 0.000000 WP0018 169.120071 - 0.050291 + 0.000000 WP0019 148.594345 - 0.046561 + 0.000000 WP0020 144.216919 - 0.042504 + 0.000000 WP0021 151.511292 - 0.046561 + 0.000000 WP0022 160.463150 - 0.026882 + 0.000000 WP0023 180.000000 - 0.019008 + 0.000000 WP0024 @@ -149,496 +149,496 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/ WP0029 - 0.167877 + 0.000000 WP0030 99.441742 - 0.190083 + 0.000000 WP0031 0.000000 - 0.170016 + 0.000000 WP0032 - 0.053764 + 0.000000 WP0033 - 0.063043 + 0.000000 WP0034 - 0.057025 + 0.000000 WP0035 - 0.057025 + 0.000000 WP0036 - 1.432199 + 1.275627 WP0037 24.064192 - 1.432560 + 1.063023 WP0038 16.541142 - 1.618836 + 1.275627 WP0039 15.659211 - 1.835854 + 1.275627 WP0040 - 2.446469 + 2.551255 WP0041 - 1.096733 + 1.275627 WP0042 42.315998 - 1.258575 + 1.275627 WP0043 53.605648 - 1.478501 + 1.275627 WP0044 30.277189 - 1.237587 + 1.275627 WP0045 41.205185 - 1.278231 + 1.275627 WP0046 42.981739 - 1.427271 + 1.275627 WP0047 45.288700 - 1.287806 + 1.275627 WP0048 37.912586 - 1.190717 + 1.275627 WP0049 48.789742 - 1.202943 + 1.275627 WP0050 42.365654 - 1.548800 + 1.275627 WP0051 93.847755 - 0.464052 + 0.000000 WP0052 - 1.407002 + 1.275627 WP0053 - 1.357865 + 1.275627 WP0054 - 1.291588 + 1.275627 WP0055 - 1.300648 + 1.275627 WP0056 - 1.499009 + 1.275627 WP0057 - 1.499370 + 1.275627 WP0058 - 1.419783 + 1.275627 WP0059 - 1.123262 + 1.275627 WP0060 - 1.264875 + 1.275627 WP0061 - 1.489943 + 1.275627 WP0062 - 1.015479 + 1.275627 WP0063 - 1.142083 + 1.275627 WP0064 - 1.062938 + 1.275627 WP0065 - 1.629736 + 1.275627 WP0066 - 1.364369 + 1.275627 WP0067 - 0.478995 + 0.000000 WP0068 172.810944 - 0.574354 + 0.000000 WP0069 - 0.638974 + 1.275627 WP0070 - 1.676724 + 1.275627 WP0071 - 0.573724 + 0.000000 WP0072 - 0.448210 + 0.000000 WP0073 - 0.410333 + 0.000000 WP0074 18.980536 - 1.878750 + 1.275627 WP0075 - 0.384889 + 0.000000 WP0076 146.881775 - 10.627611 + 10.205019 WP0077 130.104218 - 4.382399 + 3.826882 WP0078 159.542908 - 2.005446 + 2.551255 WP0079 159.601395 - 4.983410 + 5.102509 WP0080 - 0.750528 + 1.275627 WP0081 - 2.515643 + 2.551255 WP0082 - 1.738717 + 1.275627 WP0083 - 1.248053 + 1.275627 WP0084 - 1.219648 + 1.275627 WP0085 - 1.044767 + 1.275627 WP0086 - 0.818463 + 1.275627 WP0087 - 0.726058 + 1.275627 WP0088 - 0.552369 + 1.063023 WP0089 - 0.563878 + 0.000000 WP0090 - 0.521951 + 0.000000 WP0091 - 0.455804 + 0.000000 WP0092 - 0.436778 + 0.000000 WP0093 - 0.398269 + 0.000000 WP0094 - 0.363154 + 0.000000 WP0095 - 0.358144 + 0.000000 WP0096 - 0.341092 + 0.000000 WP0097 - 0.326479 + 0.000000 WP0098 - 3.193230 + 3.826882 WP0099 - 6.545493 + 6.378137 WP0100 167.346375 - 7.196805 + 7.653764 WP0101 170.295609 - 5.201792 + 5.102509 WP0102 - 5.426836 + 5.102509 WP0103 - 1.610220 + 1.275627 WP0104 - 2.078176 + 2.551255 WP0105 - 0.445379 + 0.000000 WP0106 137.402069 - 1.775321 + 1.275627 WP0107 - 4.208789 + 3.826882 WP0108 - 2.778599 + 2.551255 WP0109 - 1.977414 + 2.551255 WP0110 44.302502 - 2.613213 + 2.126046 WP0111 - 2.175488 + 2.126046 WP0112 30.543665 - 5.881074 + 6.378137 WP0113 - 3.443919 + 3.826882 WP0114 - 6.119472 + 6.378137 WP0115 10.757442 - 5.495544 + 5.102509 WP0116 26.591137 - 3.246643 + 3.826882 WP0117 36.030758 - 3.738654 + 3.826882 WP0118 59.238380 - 1.915319 + 2.551255 WP0119 - 0.720814 + 1.275627 WP0120 4.727779 - 0.560343 + 0.000000 WP0121 - 2.718789 + 2.551255 WP0122 81.836906 - 1.306607 + 1.063023 WP0123 - 0.582474 + 0.000000 WP0124 - 0.477105 + 0.000000 WP0125 41.664234 - 0.241189 + 0.000000 WP0126 - 0.217560 + 0.000000 WP0127 41.891056 - 0.133058 + 0.000000 WP0128 45.655930 - 0.945843 + 1.275627 WP0129 - 1.060215 + 1.275627 WP0130 - 0.484619 + 0.000000 WP0131 - 0.688249 + 1.275627 WP0132 - 0.076033 + 0.000000 WP0133 103.189636 - 0.046561 + 0.000000 WP0134 - 0.096924 + 0.000000 WP0135 - 0.098770 + 0.000000 WP0136 - 0.057025 + 0.000000 WP0137 64.432991 - 0.032923 + 0.000000 WP0138 - 0.085008 + 0.000000 WP0139 - 0.087107 + 0.000000 WP0140 - 0.063043 + 0.000000 WP0141 - 0.065847 + 0.000000 WP0142 - 1.088465 + 1.275627 WP0143 @@ -647,61 +647,61 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/ WP0144 - 0.091161 + 0.000000 WP0145 - 0.038017 + 0.000000 WP0146 - 0.127512 + 0.000000 WP0147 - 0.085008 + 0.000000 WP0148 - 0.162407 + 0.000000 WP0149 - 0.038017 + 0.000000 WP0150 148.807159 - 0.050291 + 0.000000 WP0151 - 0.068536 + 0.000000 WP0152 - 0.063043 + 0.000000 WP0153 154.334946 - 0.046561 + 0.000000 WP0154 - 0.060110 + 0.000000 WP0155 - 0.172128 + 0.000000 WP0156 - 0.155590 + 0.000000 WP0157 - 0.093121 + 0.000000 WP0158 @@ -711,22 +711,22 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/ 146.615356 - 0.019008 + 0.000000 WP0160 126.621498 - 0.060110 + 0.000000 WP0161 129.936798 - 0.046561 + 0.000000 WP0162 130.929291 - 0.032923 + 0.000000 WP0163 @@ -736,82 +736,82 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/ 124.748962 - 0.038017 + 0.000000 WP0165 130.929291 - 0.026882 + 0.000000 WP0166 120.031418 - 0.026882 + 0.000000 WP0167 120.925941 - 0.082855 + 0.000000 WP0168 120.525436 - 0.073619 + 0.000000 WP0169 124.748962 - 0.063043 + 0.000000 WP0170 128.248459 - 0.053764 + 0.000000 WP0171 139.142487 - 0.038017 + 0.000000 WP0172 142.445953 - 0.032923 + 0.000000 WP0173 130.929291 - 0.026882 + 0.000000 WP0174 98.223473 - 0.019008 + 0.000000 WP0175 79.654457 - 0.019008 + 0.000000 WP0176 104.938911 - 0.026882 + 0.000000 WP0177 101.315720 - 0.019008 + 0.000000 WP0178 79.093140 - 0.019008 + 0.000000 WP0179 90.000000 - 0.019008 + 0.000000 WP0180 @@ -820,43 +820,43 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/ WP0181 - 0.019008 + 0.000000 WP0182 - 0.038017 + 0.000000 WP0183 - 0.046561 + 0.000000 WP0184 - 0.050291 + 0.000000 WP0185 - 0.050291 + 0.000000 WP0186 2.063974 - 0.032923 + 0.000000 WP0187 61.544453 - 0.019008 + 0.000000 WP0188 46.065872 - 0.019008 + 0.000000 WP0189 16.082796 - 0.019008 + 0.000000 WP0190 @@ -872,297 +872,297 @@ xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/ WP0193 - 0.019008 + 0.000000 WP0194 - 0.026882 + 0.000000 WP0195 - 0.038017 + 0.000000 WP0196 - 0.026882 + 0.000000 WP0197 - 0.038017 + 0.000000 WP0198 - 0.042504 + 0.000000 WP0199 - 0.053764 + 0.000000 WP0200 - 0.053764 + 0.000000 WP0201 - 4.343226 + 3.826882 WP0202 - 6.788423 + 6.378137 WP0203 - 6.013606 + 6.378137 WP0204 - 5.277713 + 5.102509 WP0205 - 3.507230 + 3.826882 WP0206 - 8.370941 + 8.929392 WP0207 148.805801 - 8.679982 + 8.929392 WP0208 139.150696 - 10.451539 + 10.205019 WP0209 137.718918 - 7.718669 + 7.653764 WP0210 145.062073 - 6.406710 + 6.378137 WP0211 - 0.899237 + 1.275627 WP0212 153.232285 - 4.640603 + 5.102509 WP0213 117.705025 - 3.625063 + 3.826882 WP0214 105.405190 - 3.251814 + 3.826882 WP0215 64.787437 - 0.627275 + 0.000000 WP0216 - 7.046580 + 7.653764 WP0217 - 10.333961 + 10.205019 WP0218 135.240036 - 9.152427 + 8.929392 WP0219 134.727890 - 3.008605 + 2.551255 WP0220 - 1.994969 + 2.551255 WP0221 - 0.300548 + 0.000000 WP0222 - 9.022692 + 8.929392 WP0223 128.360611 - 0.487963 + 0.000000 WP0224 108.194084 - 0.335216 + 0.000000 WP0225 - 0.438841 + 0.000000 WP0226 81.360321 - 0.859589 + 1.275627 WP0227 6.711519 - 0.109195 + 0.000000 WP0228 - 8.182794 + 7.653764 WP0229 - 3.507539 + 3.826882 WP0230 - 5.848113 + 6.378137 WP0231 - 6.372952 + 6.378137 WP0232 97.715996 - 2.818878 + 2.551255 WP0233 133.886002 - 15.637352 + 15.307528 WP0234 140.055038 - 8.139894 + 7.653764 WP0235 125.523293 - 2.463761 + 2.551255 WP0236 134.839066 - 7.375820 + 7.653764 WP0237 151.842575 - 3.694468 + 3.826882 WP0238 - 0.962317 + 1.275627 WP0239 144.244812 - 3.706478 + 3.826882 WP0240 - 11.200036 + 11.480646 WP0241 - 12.827707 + 12.756274 WP0242 - 18.368883 + 17.858784 WP0243 126.742546 - 19.507580 + 19.134411 WP0244 148.218903 - 7.472546 + 7.175404 WP0245 - 2.483881 + 2.733487 WP0246 173.173264 - 1.303782 + 0.911162 WP0247 - 1.967664 + 1.962504 WP0248 29.760809 - 1.533561 + 1.275627 WP0249 - 14.154443 + 14.031901 WP0250 102.553291 - 7.354651 + 7.653764 WP0251 - 3.915116 + 3.826882 WP0252 31.289225 - 2.894576 + 2.551255 WP0253 - 11.849266 + 11.480646 WP0254 163.440262 - 3.120760 + 2.733487 WP0255 129.279663 - 2.973259 + 3.029615 WP0256 - 23.597078 + 22.961292 WP0257 120.761200 - 1.060176 + 1.075830 WP0258 - 0.116564 + 0.135705 WP0259 diff --git a/gpsbabel/wbt-200.c b/gpsbabel/wbt-200.c index 685031bf5..7922f9230 100644 --- a/gpsbabel/wbt-200.c +++ b/gpsbabel/wbt-200.c @@ -193,10 +193,16 @@ static void data_chunk(struct read_state *st, const void *buf) { rtim = mkgmtime(&t); if (lat >= 100) { - /* Start new track */ + /* Start new track in the northern hemisphere */ lat -= 100; st->route_head = NULL; + } else if (lat <= -100) { + /* Start new track in the southern hemisphere */ + /* This fix courtesy of Anton Frolich */ + lat += 100; + st->route_head = NULL; } else { + double speed, gcd, dtim, rtm; wpt = waypt_new(); wpt->latitude = lat;; @@ -204,14 +210,17 @@ static void data_chunk(struct read_state *st, const void *buf) { wpt->creation_time = rtim; wpt->centiseconds = 0; - /* OK to reuse buffer now */ sprintf(wp_name, "WP%04d", ++st->wpn); wpt->shortname = xstrdup(wp_name); - wpt->speed = radtometers( - gcdist(RAD(st->plat), RAD(st->plon), - RAD(lat), RAD(lon))) / - (rtim - st->ptim); + /* Broken down to make it easier to find the source of rounding errors */ + gcd = gcdist(RAD(st->plat), RAD(st->plon), RAD(lat), RAD(lon)); + gcd = (double) ((long) (gcd * 1000000 + 0.5)) / 1000000; + dtim = rtim - st->ptim; + rtm = radtometers(gcd); + speed = rtm / dtim; + + wpt->speed = speed; wpt->course = DEG(heading(RAD(st->plat), RAD(st->plon), RAD(lat), RAD(lon))); wpt->pdop = 0; -- 2.30.2